//---------------------------------------------------------------------------- // File: CRS3DVectors.h // Class: CRS3DVectors // Type: 3D API System Managment // Author: Ken Anderson // Date: 10/24/04 // OS dependant: Direct3D // Desc: Provides a functional set of tools for vectors. As apart of the // Common Rendering System, the functionality must be similiar to the Direct3d // and OpenGL systems in order to properly relay the data. // Required headers: // 1) C3DTypes.h -- //---------------------------------------------------------------------------- #ifndef __CRS3DVECTORS__ #define __CRS3DVECTORS__ #include "C3DTypes.h" typedef SC3DVertex4f C3DVectors4; typedef SC3DVertex3f C3DVectors3; typedef SC3DVertex2f C3DVectors2; typedef SC3DMatrix3 C3DMatrix3; typedef SC3DMatrix4 C3DMatrix4; typedef C3DMatrix4 C3DMatrix; class C3DTools { //NOTE: Inline may cause errors inline C3DVectors2* Vec2Add( C3DVectors2 *pOut, const C3DVectors2* pV1, const C3DVectors2* pV2); inline C3DVectors2* Vec2Subtract( C3DVectors2 *pOut, const C3DVectors2* pV1, const C3DVectors2* pV2); inline C3DVectors2* Vec2Minimize( C3DVectors2 *pOut, const C3DVectors2* pV1, const C3DVectors2* pV2); inline C3DVectors2* Vec2Maximize( C3DVectors2 *pOut, const C3DVectors2* pV1, const C3DVectors2* pV2); inline C3DVectors2* Vec2Scale( C3DVectors2 *pOut, const C3DVectors2* pV1, const C3DVectors2* pV2); inline C3DVectors2* Vec2Lerp( C3DVectors2 *pOut, const C3DVectors2* pV1, const C3DVectors2* pV2); inline float Vec2CCW(const C3DVectors2* pV1, const C3DVectors2* pV2); inline float Vec2Dot(const C3DVectors2* pV1, const C3DVectors2* pV2); inline float Vec2LengthSq(const C3DVectors2* pV1); inline float Vec2Length(const C3DVectors2* pV1); inline float Vec3Length(const C3DVectors3* pV1); inline float Vec3LengthSq(const C3DVectors3* pV1); inline float Vec3Dot(const C3DVectors3* pV1, const C3DVectors3* pV2); inline C3DVectors3* Vec3Cross(C3DVectors3* pOut, const C3DVectors3* pV1, const C3DVectors3* pV2); inline C3DVectors3* Vec3Add(C3DVectors3* pOut, const C3DVectors3* pV1, const C3DVectors3* pV2); inline C3DVectors3* Vec3Subtract(C3DVectors3* pOut, const C3DVectors3* pV1, const C3DVectors3* pV2); inline C3DVectors3* Vec3Minimize(C3DVectors3* pOut, const C3DVectors3* pV1, const C3DVectors3* pV2); inline C3DVectors3* Vec3Maximize(C3DVectors3* pOut, const C3DVectors3* pV1, const C3DVectors3* pV2); inline C3DVectors3* Vec3Scale(C3DVectors3* pOut, const C3DVectors3* pV1, float s); inline C3DVectors3* Vec3Lerp(C3DVectors3* pOut, const C3DVectors3* pV1, const C3DVectors3* pV2, float s); inline float Vec4Length(C3DVectors4* pV1); inline float Vec4LengthSq(C3DVectors4* pV1); inline float Vec4Dot(C3DVectors4* pV1, C3DVectors4* pV2); inline C3DVectors4* Vec4Add(C3DVectors4* pOut, const C3DVectors4* pV1, const C3DVectors4* pV2); inline C3DVectors4* Vec4Subtract(C3DVectors4* pOut, const C3DVectors4* pV1, const C3DVectors4* pV2); inline C3DVectors4* Vec4Minimize(C3DVectors4* pOut, const C3DVectors4* pV1, const C3DVectors4* pV2); inline C3DVectors4* Vec4Maximize(C3DVectors4* pOut, const C3DVectors4* pV1, const C3DVectors4* pV2); inline C3DVectors4* Vec4Scale(C3DVectors4* pOut, const C3DVectors4* pV1, float s); inline C3DVectors4* Vec4Lerp(C3DVectors4* pOut, const C3DVectors4* pV1, const C3DVectors4* pV2, float s); inline C3DMatrix* MatrixIdentity(C3DMatrix* pOut); }; /* D3DVector D3DXVec2Add D3DXVec2BaryCentric D3DXVec2CatmullRom D3DXVec2CCW D3DXVec2Dot D3DXVec2Hermite D3DXVec2Length D3DXVec2LengthSq D3DXVec2Lerp D3DXVec2Maximize D3DXVec2Minimize D3DXVec2Normalize D3DXVec2Scale D3DXVec2Subtract D3DXVec2Transform D3DXVec2TransformCoord D3DXVec2TransformNormal */ #endif